iT邦幫忙

2021 iThome 鐵人賽

DAY 8
0
DevOps

和 gitlab 一起當個好朋友系列 第 8

Day08-gitlab job 的工作流

  • 分享至 

  • xImage
  •  

Job

昨天的範例終究是一個 Job

每一個 Job 是最小的單位

但是如果我們寫多個 Job 的時候 會一次全部執行

就像我們在寫前端的時候

所有的非同步都會同時動作

這樣的狀況有點失控

我們需要一些步驟來設計一下部署的工作流

工作流

基本的工作流可以分為可以同時處理的事情 和順序性的事情

所以要針對同時進行的 Job 做群組跟排序

這時候就需要使用到 Stages

Stage - 階段

每一個 Job 都可以設定他是在哪一個 階段進行的工作

這樣就可以做到把每一個 Job 群組歸類

再針對階段進行順序排序

範例

先將基本的打包流程分為三個階段

  • Prepare
    • 處理環境設定黨
    • 處理 submodule 或是 sub repo
    • 安裝依賴檔案
  • Build
    • 打包
    • 壓縮
  • Deploy
    • 將打包完成的壓縮黨傳送到 Server 或是 平台

https://ithelp.ithome.com.tw/upload/images/20210923/20140956uQAEQNfUZn.png

這樣就可以設計出適合每一個專案的部署流程

中間也可以插入測試 或是在最後加入通知

https://ithelp.ithome.com.tw/upload/images/20210923/201409560uDfai6wAq.png

  • rules - 增加一些規則 規範工作流
  • when - 當條件成立時執行 (有一個是成功會發送成功的訊息, 一個是失敗會發送失敗的訊息)
stages:
  - Prepare
  - Build
  - Deploy
  - Notification

Prepare:Env:
  stage: Prepare
  script:
    - echo "AAA=BBB" > .env 

Prepare:submodule:
  stage: Prepare
  script:
    - echo 'clone sub repo or submodule' 

Prepare:Packages:
  stage: Prepare
  script:
    - echo 'yarn install'

Build:DevResult:
  stage: Build
  script:
    - echo 'yarn build'

Deploy:CopyToServer:
  stage: Deploy
  script:
    - echo 'scp to server'

Notification:SendSuccessMessage:
  stage: Notification
  rules:
    - when: on_success
  script:
    - echo 'node SendSuccessMessage.js'

Notification:SendErrorMessage:
  stage: Notification
  rules:
    - when: on_failure
  script:
    - echo 'node SendErrorMessage.js'

了解這些之後就可以初步來規劃我們的部署


上一篇
Day07-gitlab-ci.yml
下一篇
Day09-靜態 HTML 的部署
系列文
和 gitlab 一起當個好朋友15
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言